package fileDemo;

import fileDemo.mfile.FileUtils;
import org.apache.log4j.Logger;

import java.io.File;

/**
 * @author Ajie
 * @date 2020-09-18
 * @function
 */
public class ZipUtilTest {
    private static final Logger logger = Logger.getLogger(ZipUtilTest.class);

    public static void main(String[] args) throws Exception{
        File originDir = new File("./src/fileDemo/testFile");
        String unzipDir = "./src/fileDemo/testFile/unzipDir";
        File[] files = originDir.listFiles();

        unZipFiles(unzipDir, files);

        for (int i = 0; i < files.length; i++) {
            String unzipFolder = unzipDir + i;
            Thread.sleep(100);
            System.out.println("main: index:"+ files[i].getAbsolutePath()+"----dir:"+ unzipDir +i);

            String image = FileUtils.findFileParentFolder(new File(unzipFolder),FileUtils.imageExtensions);
            System.err.println("ZipUtilTest:main:res得到:::"+image);
        }
        String image = FileUtils.findFileParentFolder(new File(unzipDir+3), FileUtils.imageExtensions);
            System.err.println("ZipUtilTest:main:res:::"+image);

    }

    private static void unZipFiles(String unzipDir, File[] files) throws InterruptedException {
        for (int i = 0; i < files.length; i++) {
            System.err.println("main: index:"+ files[i].getAbsolutePath()+"----dir:"+ unzipDir +i);
            Thread.sleep(100);// 为了打印。不乱序。
            if (files[i].getName().endsWith(".zip")){
                try {
                    String unzipFolder = unzipDir + i;

//                    合并下面的2个方法
                    ZipUtils.unZipFolder_UTF8AndGBK(files[i].getAbsolutePath(), unzipFolder);

                    //其他无问题：
                    // mac压缩的图片10张-无嵌套文件夹-中文名.zip 解压有问题。干扰10.jpg--->骞叉壈10.jpg
                    //mac压缩的图片2张-有嵌套文件夹.zip ---->鎵归噺鐓х墖 ???
//                    ZipUtils.unzipFileGBK(files[i].getAbsolutePath(), unzipFolder);

                    //win压缩10人照片-有嵌套文件夹.zip 解压。失败 java.lang.IllegalArgumentException: MALFORMED
                    //其他正常。没有乱码。
//                   ZipUtils.unZipFolder(files[i].getAbsolutePath(),unzipFolder);

                    File file = new File(unzipFolder);
                    if (file != null && file.exists()) {
                        for (int j = 0; file.listFiles()!=null && j < file.listFiles().length; j++) {
                            File subfile = file.listFiles()[j];
                            System.out.println("ZipUtilTest:main:isValide:"+isPrintable(subfile.getName())+",:"+subfile.getName());
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //不好用。不能检测出。 鎵归噺鐓х墖  等解压造成的乱码。
    public static boolean isPrintable(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (Character.isISOControl(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

}
